package co.yixiang.common.web.param;

import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.core.metadata.OrderItem;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.util.Arrays;
import java.util.List;

/**
 * 可排序查询参数对象
 * 继承自QueryParam，增加了排序相关的功能
 */
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel("可排序查询参数对象")
public abstract class OrderQueryParam extends QueryParam{
    private static final long serialVersionUID = 57714391204790143L;

    /**
     * 排序列表
     */
    @ApiModelProperty(value = "排序")
    private List<OrderItem> orders;

    /**
     * 设置默认排序项
     * 如果orders为空，则添加orderItem到orders列表
     *
     * @param orderItem 默认的排序项
     */
    public void defaultOrder(OrderItem orderItem){
        this.defaultOrders(Arrays.asList(orderItem));
    }

    /**
     * 设置默认排序项列表
     * 当orderItems为空时，直接返回，否则将orderItems赋值给orders
     *
     * @param orderItems 默认的排序项列表
     */
    public void defaultOrders(List<OrderItem> orderItems){
        if (CollectionUtil.isEmpty(orderItems)){
            return;
        }
        this.orders = orderItems;
    }

}
